package org.Yiran.timetale_re.item.rune;

import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import org.Yiran.timetale_re.item.ItemsRegister;
import org.Yiran.timetale_re.item.rune.base.AbstractRune;
import org.Yiran.timetale_re.item.rune.base.RuneItem;

/**
 * 空白符文实现类
 * <p>
 * 该类实现了空白符文的功能，空白符文是一种特殊的符文，
 * 可以被雕刻成其他类型的符文。它是符文系统的基础组件之一。
 * 继承自AbstractRune基类。
 * </p>
 */
public class BlankRune extends AbstractRune {

    // ==============================
    // 构造方法
    // ==============================

    /**
     * 空白符文构造函数
     * <p>
     * 创建一个空白符文实例，设置符文类型为RuneItem.BLANK，
     * 符文分类为RuneItem.NONE，冷却时间为0。
     * 空白符文作为原材料，不需要冷却时间。
     * </p>
     */
    public BlankRune() {
        super(RuneItem.BLANK, RuneItem.NONE, 0); // 空白符文无冷却时间
    }

    // ==============================
    // 符文雕刻方法
    // ==============================

    /**
     * 将空白符文雕刻成风暴符文
     * <p>
     * 这是一个实用方法，用于将空白符文转换为风暴符文。
     * 该方法会验证输入是否为空白符文，然后创建相应数量的风暴符文。
     * </p>
     *
     * @param stack 空白符文物品堆，需要被转换的符文物品
     * @return 风暴符文物品堆，转换后的符文物品
     */
    public static ItemStack carveToStormRune(ItemStack stack) {
        if (!RuneItem.isBlankRune(stack)) {
            return stack;
        }

        ItemStack newStack = new ItemStack(ItemsRegister.RUNE.get());
        newStack.setCount(stack.getCount());
        RuneItem.setRuneType(newStack, RuneItem.STORM);
        return newStack;
    }

    // ==============================
    // 符文使用方法
    // ==============================

    /**
     * 使用空白符文时的处理逻辑
     * <p>
     * 当玩家使用空白符文时调用此方法。
     * 目前仅调用空白符文的特殊功能方法，但可以扩展添加更多效果。
     * </p>
     *
     * @param stack  符文物品堆，包含具体符文信息的物品实例
     * @param level  当前世界对象，提供游戏环境上下文
     * @param player 使用符文的玩家对象
     */
    @Override
    public void onUse(ItemStack stack, Level level, Player player) {
        // 空白符文的基础功能实现
        // 这里可以添加空白符文的特殊效果
        onUseBlankRune(stack);
    }
    
    /**
     * 空白符文的特殊功能
     * <p>
     * 实现空白符文的特殊功能逻辑。
     * 目前为空实现，可以根据需要添加具体效果。
     * </p>
     *
     * @param stack 符文物品堆，包含具体符文信息的物品实例
     */
    public static void onUseBlankRune(ItemStack stack) {
        // 空白符文的基础功能实现
        // 这里可以添加空白符文的特殊效果
    }
}